1
Dari Operator Eager ke Paralelisme Berbasis Blok
AI023Lesson 3
00:00

Mengalihkan dari Mode Eager PyTorch ke Triton membutuhkan perubahan pandangan dari melihat tensor sebagai objek monolitik menjadi melihatnya sebagai kumpulan blok yang terpisah dan dapat dikelola blok atau ubin.

1. Tensor PyTorch vs. Triton

Sangat penting untuk membedakan tensor Triton dengan tensor PyTorch. Tensor PyTorch adalah objek Python sisi host yang membungkus bentuk, dtype, perangkat, stride, dan metadata penyimpanan. Sebaliknya, Triton bekerja dengan penunjuk data mentah di dalam blok memori tertentu, memungkinkan optimasi tingkat yang jauh lebih rendah.

2. Hambatan Mode Eager

Dalam eksekusi eager standar, setiap operasi (misalnya, Penjumlahan lalu ReLU) memerlukan peluncuran kernel terpisah dan perjalanan bolak-balik memori global. Ini adalah hambatan utama dalam komputasi GPU modern. Triton mengatasinya dengan menggabungkan operasi dalam satu kernel yang memproses blok data (misalnya, 128, 256, atau 512 elemen) langsung di memori internal chip.

3. Paradigma Berbasis Blok

Alih-alih berpikir pada tingkat skalar seperti thread CUDA, Triton menggunakan SPMD (Program Tunggal, Data Ganda) pada tingkat blok. Anda menulis satu kernel, dan Triton meluncurkan banyak instans di seluruh kisi. Setiap instans menggunakan program_id untuk menghitung blok memori mana yang dimilikinya.

Tensor PyTorch[Pembungkus Metadata]Blok 0 (pid 0)Blok 1 (pid 1)Blok 2 (pid 2)

4. Pengaturan Lingkungan

Untuk memulai, pasang Triton di lingkungan bersih (menggunakan Conda atau venv) untuk memastikan tidak ada konflik dependensi dengan toolkit CUDA yang sudah ada: pip install triton.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>